home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / PROPCIRC.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1997-01-29  |  5.2 KB  |  176 lines

  1. 10  'PROPCIRC - 17 DEC 93 rev. 27 SEP 96
  2. 20  IF EX$=""THEN EX$="EXIT"
  3. 30  CLS:KEY OFF
  4. 40  COLOR 7,0,5
  5. 50  UL$=STRING$(80,205)
  6. 60  U$="###,###.###"
  7. 70  P=3.14159
  8. 80  ON ERROR GOTO 180
  9. 90  '
  10. 100  '.....start
  11. 110  CLS:R=0:D=0:CF=0:AR=0:A=0:C=0:AC=0:B=0
  12. 120  COLOR 15,1
  13. 130  PRINT " PROPERTIES OF THE CIRCLE";TAB(61);"by George C. Murphy ";
  14. 140  COLOR 5,0:PRINT STRING$(80,223);
  15. 150  COLOR 7,0
  16. 160  GOTO 260
  17. 170  '
  18. 180  '.....error trap
  19. 190  BEEP
  20. 200  PRINT "You may have entered a combination of factors that ";
  21. 210  PRINT "is not possible.
  22. 220  PRINT:PRINT "Press any key to start over."
  23. 230  IF INKEY$=""THEN 230
  24. 240  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3:GOTO 100
  25. 250  '
  26. 260  '.....display text
  27. 270  GOSUB 1160     'text
  28. 280  COLOR 0,7:LOCATE 25,24
  29. 290  PRINT " Press 1 to RUN or 0 to EXIT.....";
  30. 300  COLOR 7,0
  31. 310  Z$=INKEY$:IF Z$=""THEN 310
  32. 320  IF Z$="0"THEN CLS:RUN EX$
  33. 330  IF Z$="1"THEN 350
  34. 340  GOTO 310
  35. 350  GOSUB 1630     'screen dump
  36. 360  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  37. 370  PRINT " If you do not know the following, press <ENTER>"
  38. 380  PRINT UL$;
  39. 390  '
  40. 400  '.....inputs
  41. 410  IF  R=0 THEN INPUT " ENTER: Radius of circle ";R:D=2*R:GOSUB 510
  42. 420  IF  D=0 THEN INPUT " ENTER: Diameter of circle ";D:R=D/2:GOSUB 510
  43. 430  IF CF=0 THEN INPUT " ENTER: Cicumference of circle ";CF:GOSUB 510
  44. 440  IF AR=0 THEN INPUT " ENTER: Area of circle ";AR:GOSUB 510
  45. 450  IF  A=0 THEN INPUT " ENTER: Angle between radials ";Q:A=Q*P/180:GOSUB 510
  46. 460  IF  C=0 THEN INPUT " ENTER: Length of chord AB ";C:GOSUB 510
  47. 470  IF AC=0 THEN INPUT " ENTER: Length of arc AB ";AC:GOSUB 510
  48. 480  IF  B=0 THEN INPUT " ENTER: Height if segment ";B:GOSUB 510
  49. 490  IF AC*D*CF*AR*A*R*C*B THEN 940 ELSE GOSUB 510:GOTO 400
  50. 500  '
  51. 510  '.....calculate properties
  52. 520  VIEW PRINT 5 TO 24:CLS:VIEW PRINT:LOCATE 5
  53. 530  FOR Y=1 TO 5
  54. 540  IF B=0 THEN IF A=P THEN B=0:GOSUB 750
  55. 550  IF AR=0 THEN IF R*1 THEN AR=P*R^2:D=2*R:CF=P*D
  56. 560  IF D=0 THEN IF R*1 THEN D=2*R
  57. 570  IF CF=0 THEN IF R*1 THEN CF=P*2*R
  58. 580  IF AC=0 THEN IF A*R THEN AC=A*R
  59. 590  IF A=0 THEN IF AC*R THEN A=AC/R
  60. 600  IF A=0 THEN IF R*C THEN Z=C/2/R:A=2*ATN(Z/SQR(-Z*Z+1))
  61. 610  IF R=0 THEN IF A*B THEN R=B/(1-COS(A/2))
  62. 620  IF R=0 THEN IF B*C THEN R=(4*B^2+C^2)/(8*B):A=2*(P-(2*(ATN((C/2)/B))))
  63. 630  IF C=0 THEN IF B*R THEN C=2*(SQR(2*B*R-B^2))
  64. 640  IF C=0 THEN IF A*R THEN C=2*R*SIN(A/2)
  65. 650  IF B=0 THEN IF R*C THEN B=R-0.5*(SQR(4*R^2-C^2))
  66. 660  IF B=0 THEN IF A*C THEN B=C/2*TAN(A/4)
  67. 670  IF B=0 THEN IF A*R THEN B=2*R*(SIN(A/4)^2)
  68. 680  IF R=0 THEN IF AR*1 THEN R=SQR(AR/P)
  69. 690  IF R=0 THEN IF CF*1 THEN R=CF/(2*P)
  70. 700  IF R=0 THEN IF A*AC THEN R=AC/A
  71. 710  IF A=0 THEN IF AC*B THEN GOSUB 800
  72. 720  IF A=0 THEN IF AC*C THEN GOSUB 870
  73. 730  NEXT Y:RETURN
  74. 740  '
  75. 750  IF C*1 THEN D=C:R=D/2
  76. 760  IF D*1 THEN C=D:R=D/2
  77. 770  IF R*1 THEN D=2*R:C=D
  78. 780  RETURN
  79. 790  '
  80. 800  '.....solve angle A by iteration if AC (arc) and B (height) known
  81. 810  Z=10*P/180
  82. 820  A=A+Z:X=A*B/(1-COS(A/2))
  83. 830  IF ABS(X-AC)<=X*9.99E-07 THEN RETURN
  84. 840  IF X<AC THEN A=A-Z:Z=Z/10
  85. 850  GOTO 820
  86. 860  '
  87. 870  '.....solve angle A by iteration if AC (arc) and C (chord) known
  88. 880  Z=10*P/180:J=2*AC/C
  89. 890  A=A+Z:X=A/SIN(A/2)
  90. 900  IF ABS(X-J)<=X*9.99E-07 THEN RETURN
  91. 910  IF X>J THEN A=A-Z:Z=Z/10
  92. 920  GOTO 890
  93. 930  '
  94. 940  '.....display data
  95. 950  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  96. 960  D$=" units"
  97. 970  PRINT " Radius / Length of radials...";USING U$;R;:PRINT D$
  98. 980  PRINT " Diameter.....................";USING U$;D;:PRINT D$
  99. 990  PRINT " Circumference................";USING U$;CF;:PRINT D$
  100. 1000  PRINT " Area of full circle..........";USING U$;AR;:PRINT D$;"<UNK! {FD22}>
  101. 1010  PRINT " Angle between radials........";USING U$;A*180/P;:PRINT "<UNK! {00F8}>"
  102. 1020  PRINT " Length of chord AB...........";USING U$;C;:PRINT D$
  103. 1030  PRINT " Length of arc AB.............";USING U$;AC;:PRINT D$
  104. 1040  PRINT " Height of segment............";USING U$;B;:PRINT D$
  105. 1050  SC=P*R^2*A/(2*P)
  106. 1060  SG=SC-((R-B)*C/2)
  107. 1070  PRINT " Area of segment..............";USING U$;SG;:PRINT D$;"<UNK! {FD22}>
  108. 1080  PRINT " Area of sector...............";USING U$;SC;:PRINT D$;"<UNK! {FD22}>
  109. 1090  PRINT UL$;
  110. 1100  PRINT " All calculated values are rounded of to nearest 1/1000 unit."
  111. 1110  PRINT UL$;
  112. 1120  LN=16
  113. 1130  GOSUB 1630
  114. 1140  GOTO 100
  115. 1150  '
  116. 1160  '.....text block
  117. 1170  TB=7     'tab for text
  118. 1180  PRINT TAB(TB);
  119. 1190  PRINT "Draw a circular clock face. Mark 3 points on the circle: A at 10"
  120. 1200  PRINT TAB(TB);
  121. 1210  PRINT "o'clock, B at 2 o'clock, C at the centre of the circle. Draw lines"
  122. 1220  PRINT TAB(TB);
  123. 1230  PRINT "from A to B, B to C, and C to A."
  124. 1240  PRINT UL$;
  125. 1250  PRINT TAB(TB);
  126. 1260  PRINT "The following definitions apply to this diagram:"
  127. 1270  PRINT TAB(TB);
  128. 1280  PRINT "THENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHEN"
  129. 1290  PRINT TAB(TB);
  130. 1300  PRINT "RADIAL - any line drawn between the centre of a circle and any"
  131. 1310  PRINT TAB(TB);
  132. 1320  PRINT "  point on the circumference. Lines AC and BC are radials.
  133. 1330  PRINT TAB(TB);
  134. 1340  PRINT "CHORD - a straight line drawn between any two points on the"
  135. 1350  PRINT TAB(TB);
  136. 1360  PRINT "  circumference. Line AB is a chord."
  137. 1370  PRINT TAB(TB);
  138. 1380  PRINT "ARC - that part of the circumference which lies between any two"
  139. 1390  PRINT TAB(TB);
  140. 1400  PRINT "  points. The curved line between A and B is an arc."
  141. 1410  PRINT TAB(TB);
  142. 1420  PRINT "ANGLE - the angle in degrees between 2 radials that terminate at"
  143. 1430  PRINT TAB(TB);
  144. 1440  PRINT "  the ends of a chord or arc. (angle ACB on your sketch).
  145. 1450  PRINT TAB(TB);
  146. 1460  PRINT "SECTOR - the pie shaped figure formed by two radials and the arc"
  147. 1470  PRINT TAB(TB);
  148. 1480  PRINT "  joining their ends."
  149. 1490  PRINT TAB(TB);
  150. 1500  PRINT "SEGMENT - the figure formed by a chord and the shorter of the two"
  151. 1510  PRINT TAB(TB);
  152. 1520  PRINT "  arcs joining the ends of the chord."
  153. 1530  PRINT TAB(TB);
  154. 1540  PRINT "HEIGHT (of segment) - the distance between the midpoints of the"
  155. 1550  PRINT TAB(TB);
  156. 1560  PRINT "  arc and the chord that form a segment.
  157. 1570  PRINT TAB(TB);
  158. 1580  PRINT "DIMENSIONS can be entered in any unit of measure, as long as the"
  159. 1590  PRINT TAB(TB);
  160. 1600  PRINT "  same unit is used for all dimensions.";
  161. 1610  RETURN
  162. 1620  '
  163. 1630  'HARDCOPY
  164. 1640  GOSUB 1750:LOCATE 25,2:COLOR 14,6
  165. 1650  PRINT " Press 1 to print screen, 2 to print screen & ";
  166. 1660  PRINT "advance paper, or 3 to continue.";:COLOR 7,0
  167. 1670  Z$=INKEY$:IF Z$="3"THEN GOSUB 1750:RETURN
  168. 1680  IF Z$="1"OR Z$="2"THEN GOSUB 1750:GOTO 1700
  169. 1690  GOTO 1670
  170. 1700  FOR QX=1 TO 24:FOR QY=1 TO 80
  171. 1710  LPRINT CHR$(SCREEN(QX,QY));
  172. 1720  NEXT QY:NEXT QX
  173. 1730  IF Z$="2"THEN LPRINT CHR$(12)
  174. 1740  GOTO 1640
  175. 1750  LOCATE 25,1:PRINT STRING$(80,32);:RETURN
  176.